package controller;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import persistence.GenericDao;
import persistence.NotasDao;
import persistence.NotasDaoImpl;

import model.Disciplina;
import model.FinalAocHwBd;
import model.FinalLabBd;
import model.FinalMetodos;
import model.FinalSo;

@ManagedBean
@ViewScoped
public class NotasBean implements Serializable {

	private static final long serialVersionUID = 1L;

	String materia;
	List<FinalAocHwBd> listasAHB = new ArrayList<FinalAocHwBd>();
	List<FinalLabBd> listasLBD = new ArrayList<FinalLabBd>();
	List<FinalMetodos> listasM = new ArrayList<FinalMetodos>();
	List<FinalSo> listasSO = new ArrayList<FinalSo>();

	public String getMateria() {
		return materia;
	}

	public void setMateria(String materia) {
		this.materia = materia;
	}

	public List<FinalAocHwBd> getListasAHB() {
		return listasAHB;
	}

	public void setListasAHB(List<FinalAocHwBd> listasAHB) {
		this.listasAHB = listasAHB;
	}

	public List<FinalLabBd> getListasLBD() {
		return listasLBD;
	}

	public void setListasLBD(List<FinalLabBd> listasLBD) {
		this.listasLBD = listasLBD;
	}

	public List<FinalMetodos> getListasM() {
		return listasM;
	}

	public void setListasM(List<FinalMetodos> listasM) {
		this.listasM = listasM;
	}

	public List<FinalSo> getListasSO() {
		return listasSO;
	}

	public void setListasSO(List<FinalSo> listasSO) {
		this.listasSO = listasSO;
	}

	@SuppressWarnings("static-access")
	public NotasBean() {
		listasAHB = new ArrayList<FinalAocHwBd>();
		listasLBD = new ArrayList<FinalLabBd>();
		listasM = new ArrayList<FinalMetodos>();
		listasSO = new ArrayList<FinalSo>();
		setMateria((String) FacesContext.getCurrentInstance()
				.getExternalContext().getApplicationMap().get("materia"));
		Disciplina d = new Disciplina();
		d.setCodigo(getMateria());
		NotasDao nDao = new NotasDaoImpl();
		if (getMateria().equals("4703-010") || getMateria().equals("4708-010")
				|| getMateria().equals("4726-004") || getMateria().equals("4703-020")) {
			try {
				listasAHB = nDao.consultaNotasAocHwBd(d);
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				GenericDao gDao = new GenericDao();
				gDao.fechaConexao();
			}
		} else {
			if (getMateria().equals("4733-005")) {
				try {
					listasLBD = nDao.consultaNotasLabBd();
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					GenericDao gDao = new GenericDao();
					gDao.fechaConexao();
				}
			} else {
				if (getMateria().equals("5205-220")) {
					try {
						listasM = nDao.consultaNotasMetodos();
					} catch (SQLException e) {
						e.printStackTrace();
					} finally {
						GenericDao gDao = new GenericDao();
						gDao.fechaConexao();
					}
				} else {
					try {
						listasSO = nDao.consultaNotasSo(d);
					} catch (SQLException e) {
						e.printStackTrace();
					} finally {
						GenericDao gDao = new GenericDao();
						gDao.fechaConexao();
					}
				}
			}
		}
	}

}
